package com.study4j.common.utils;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**   
 * @description json工具类 
 * @author jiangbin   
 */
public class JsonUtil {
	
	/** 
	 * @description 字符串转对象
	 * @param json
	 * @param clazz
	 * @return
	 * @exception
	 */
	public static <T> T json2Object(String json, Class<T> clazz) {
		return JSON.parseObject(json, clazz);
	}

	/** 
	 * @description 字符串转List
	 * @param json
	 * @param clazz
	 * @return
	 * @exception
	 */
	public static <T> List<T> json2List(String json, Class<T> clazz) {
		return JSON.parseArray(json, clazz);
	}

	/** 
	 * @description 字符串转Map
	 * @param source
	 * @return
	 * @exception
	 */
	public static Map<String, Object> json2Map(String source) {
		Map map = (Map) JSON.parse(source);
		return map;
	}

	/** 
	 * @description 对象转字符串
	 * @param t
	 * @return
	 * @exception
	 */
	public static <T> String toJson(T t) {
		return JSON.toJSON(t).toString();
	}

	public static <T> String toJsonNullValue(T t) {
		return JSONObject.toJSONString(t, new SerializerFeature[] { SerializerFeature.WriteMapNullValue });
	}

	/** 
	 * @description map转对象
	 * @param map
	 * @param clazz
	 * @return
	 * @exception
	 */
	public static <T> T map2Object(Map map, Class<T> clazz) {
		return json2Object(toJson(map), clazz);
	}
}
